package pruebasUnitarias.pruebasPatronesMovimiento;

import movimiento.*;
import movimiento.patrones.Rectas;
import org.junit.*;
import auxiliares.Vector;

public class RectasTest {
	private PatronMovimiento movimiento;
	private Posicion posInicial;
	private Posicion posFinalArriba, posFinalAbajo, posFinalIzq, posFinalDer;

	@Before
	public void setUp() {
		this.movimiento = new Rectas();
		this.posInicial = new Posicion(4, 8);
		this.posFinalArriba = new Posicion(4, 6);
		this.posFinalAbajo = new Posicion(4, 10);
		this.posFinalIzq = new Posicion(2, 8);
		this.posFinalDer = new Posicion(6, 8);
	}

	@Test
	public void testRectaArriba() {
		Posicion posRetorno;
		posRetorno = this.movimiento.calcularNuevaPosicion(posInicial,
				new Vector(0, -2));
		Assert.assertTrue(posRetorno.equals(posFinalArriba));

		System.out.println("El movimiento recto hacia arriba funciona bien");
	}

	@Test
	public void testRectaAbajo() {
		Posicion posRetorno;
		posRetorno = this.movimiento.calcularNuevaPosicion(posInicial,
				new Vector(0, 2));
		Assert.assertTrue(posRetorno.equals(posFinalAbajo));

		System.out.println("El movimiento recto hacia abajo funciona bien");
	}

	@Test
	public void testRectaIzq() {
		Posicion posRetorno;
		posRetorno = this.movimiento.calcularNuevaPosicion(posInicial,
				new Vector(-2, 0));
		Assert.assertTrue(posRetorno.equals(posFinalIzq));

		System.out
				.println("El movimiento recto hacia la izquierda funciona bien");
	}

	@Test
	public void testRectaDer() {
		Posicion posRetorno;
		posRetorno = this.movimiento.calcularNuevaPosicion(posInicial,
				new Vector(2, 0));
		Assert.assertTrue(posRetorno.equals(posFinalDer));

		System.out
				.println("El movimiento recto hacia la derecha funciona bien");
	}

}
